package socket.test2SsBase;

import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

/**
 * 发送消息
 * 出现异常时，或其他问题时，不能依赖客户端关闭socket,服务器要主动关闭socket
 * 下面可以用 try catch with 来关闭
 */
public class Test1ServerSocket1 {
    //如果客户端关闭了，服务端还想写入数据的话，会抛出 InterruptedIOException 异常
    public static void main(String[] args) {
        ServerSocket server=null;
        try {
            //两层 try 外层异常直接关闭服务器，内层异常关闭出问题的连接，不影响其他连接
            server = new ServerSocket(8800);

                while (true) {
                    Socket socket=null;
                    try{
                        //accept 会一直阻塞到有数据
                        socket= server.accept();
                        System.out.println("server1 获取到连接。。。。。");
                        OutputStream out = socket.getOutputStream();
                        out.write("abcdefg".getBytes());
                        out.flush();
                        socket.close();
                        System.out.println("server socket close ..."+socket.isClosed());
                        System.out.println(new Date());
                    }catch (Exception e1){
                        e1.printStackTrace();
                    }
                }
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            try{
                if(server !=null){
                    server.close();
                }
            }catch (Exception e3){

            }
        }


    }
}
